package com.yangquan.visibility;

// 通过 volatile 强制线程从主内存读取最新值
// volatile 确保修改立即可见，避免死循环
public class VolatileFix {
    private static volatile boolean flag = false; // 添加 volatile

    public static void main(String[] args) {
        new Thread(() -> {
            while (!flag) {} // 每次循环都从主内存读取最新值
            System.out.println("线程 1 退出循环");
        }).start();

        new Thread(() -> {
            try { Thread.sleep(1000); } 
            catch (InterruptedException e) {}
            flag = true;
            System.out.println("线程 2 修改 flag 为 true");
        }).start();
    }
}